//
//  AppDelegate.swift
//  WeiBo
//
//  Created by 小小罗 on 15/11/5.
//  Copyright © 2015年 RealMadrid. All rights reserved.
//

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        // 测试归档的用户账号
//        print(UserAccountViewModel.sharedUserAccount.account)
        
        setupAppearance()
        
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        window?.backgroundColor = UIColor.whiteColor()
        window?.rootViewController = defaultRootViewController
        window?.makeKeyAndVisible()

        
        // 监听通知
        NSNotificationCenter.defaultCenter().addObserverForName(CRSwitchRootViewControllerNotification,// 通知名称，通知中心用来识别通知的

            object: nil,       // 发送通知的对象，如果为nil，监听任何对象

            queue: nil   // nil，主线程
            ) {[weak self](notification) -> Void in
            
                print(NSThread.currentThread())
                print(notification)
                
                let v = notification.object != nil ? WelcomeViewController() : MainViewController()
                
                //切换控制器
                self?.window?.rootViewController = v
        }
        
        
        
        
        return true
    }
    
    
    
    /// 设置全局外观 - 在很多应用程序中，都会在 AppDelegate 中设置所有需要控件的全局外观
    private func setupAppearance() {
        // 修改导航栏的全局外观 － 要在控件创建之前设置，一经设置全局有效
        UINavigationBar.appearance().tintColor = WBAppearanceTintColor
        UITabBar.appearance().tintColor = WBAppearanceTintColor
    }

   
}

//MARK:- 界面切换代码
extension AppDelegate {

    // 启动的根视图控制器
    private var defaultRootViewController: UIViewController {
    
        //1.判断是否登录
        if UserAccountViewModel.sharedUserAccount.userLogon {
            return isNewVersion ? NewFeatureViewController() : WelcomeViewController()
        }
        
        //2.如果没有登录 返回主界面
        return MainViewController()
    
    }
    
    
    
    //判断是否是新版本
    private var isNewVersion: Bool {
        //1.当前版本
//        print(NSBundle.mainBundle().infoDictionary)
        //"CFBundleShortVersionString"通过上面打印得到这个
        let currentVersion = NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String
        let version = Double(currentVersion)!
        print("当前版本\(version)")
        
        //2.之前版本
        let sandboxVersionKey = "sandboxVersionKey"
        let sandboxVersion = NSUserDefaults.standardUserDefaults().doubleForKey(sandboxVersionKey)
        print("之前版本 \(sandboxVersion)")
        
        //3.保存当前版本
        NSUserDefaults.standardUserDefaults().setDouble(version, forKey: sandboxVersionKey)
    
        return version > sandboxVersion
    }

}


